import {
	type
} from 'os';
import {
	log
} from 'util';
import Vue from 'vue'

// 获取链接内的特定参数值
function getLinkParamByProp(name) {
	var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
	var r = window.location.search.substr(1).match(reg);
	if (r != null) {
		return decodeURIComponent(r[2]);
	}
	return null;
}

function showToast(msg, deration = 1500) {
	uni.showToast({
		title: msg,
		duration: deration,
		icon: 'none'
	})
}

function showLoading(msg = '加载中') {
	uni.showLoading({
		title: msg
	})
}

// 手机号校验
function isPhoneNumber(phoneNumber) {
	let reg = /^[1][3,4,5,7,8,9][0-9]{9}$/
	return reg.test(phoneNumber)
}

// 格式化数字
function formatNumber(num, digit = 0, str = '万', dividend = 10000) {
	num = parseFloat(num)
	if (!num) {
		return 0
	}
	let isFormat = false
	if (num >= dividend) {
		num = parseFloat((num / dividend).toFixed(digit))
		isFormat = true
	} else {
		num = num.toFixed(digit)
	}
	num = parseInt(num).toString()

	let numArr = num.split('.')
	numArr[0] = numArr[0].replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g, '$1,')
	num = numArr.join('.')
	return num + (isFormat ? str : '')
}

// 格式化时间戳
function formatTimestamp(t, fmt = 'yyyy-MM-dd hh:mm:ss') {
	if (!t) {
		return ''
	}

	let ret;
	let time = new Date(t);
	const opt = {
		"y+": time.getFullYear().toString(), // 年
		"M+": (time.getMonth() + 1).toString(), // 月
		"d+": time.getDate().toString(), // 日
		"h+": time.getHours().toString(), // 时
		"m+": time.getMinutes().toString(), // 分
		"s+": time.getSeconds().toString() // 秒
		// 有其他格式化字符需求可以继续添加，必须转化成字符串
	};
	for (let k in opt) {
		ret = new RegExp("(" + k + ")").exec(fmt);
		if (ret) {
			fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
		};
	};
	return fmt;
}

// 获取时间日期 星期几
/*
    参数 t  传入 时间 如: 2020/1/1 00:00:00
    返回结果 星期几
*/
function formatWeekDate(t) {
	if (!t) {
		return ''
	}
	let weekDate = new Date(t)
	let date = formatTimestamp(weekDate, 'yyyy/MM/dd');
	let weekDay = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
	let myDate = new Date(Date.parse(date));
	let wek = weekDay[myDate.getDay()]
	return wek
}

// 格式化时间
function formatDatetime(tStr) {
	// let cur = Date.now()
	// let value = new Date(tStr)

	// let tDateCur = formatTimestamp(cur, fmt = 'yyyy-MM-dd')
	// let tDateValue = formatTimestamp(value, fmt = 'yyyy-MM-dd')
	// 如果是同一天
	// if(tDateCur===tDateValue) {

	// }
}

// 判断是否为json字符串
function isJSONStr(str) {
	if (typeof str === 'string') {
		try {
			var obj = JSON.parse(str);
			if (typeof obj === 'object' && obj) {
				return true;
			} else {
				return false;
			}
		} catch (e) {
			return false;
		}
	}
}

function toPage(path, method) {
	if (!path) {
		showToast('功能开发中')
		return
	}
	if (typeof method === 'function') {
		method(path)
		return
	}

	uni.navigateTo({
		url: path,
	})
}

function goToPage(url) {
	if (!url) {
		return uni.showToast({
			title: '未获得跳转链接',
			icon: 'none'
		})
	}
	const pageNum = getCurrentPages()
	console.log('navigateTo pageNum: ', pageNum.length)
	if (pageNum.length > 9) {
		//当打开10个页面时，用redirectTo
		uni.redirectTo({
			url
		})
	} else {
		uni.navigateTo({
			url
		})
	}
}
// // 节流
// const throttling = (function() {
// 	let timer = 0
// 	return function(callback, delay = 2000) {
// 		clearTimeout(timer)
// 		timer = setTimeout(callback, delay)
// 	}
// })()

// 防止多次点击
function noMultipleClicks(methods, info) {
	// methods是需要点击后需要执行的函数， info是点击需要传的参数
	let that = this;
	if (that.noClick) {
		// 第一次点击
		that.noClick = false;
		methods(info);
		setTimeout(() => {
			that.noClick = true;
		}, 1000)
	} else {
		// 重复点击的判断
	}
}

// 从路径中截取文件名
function getFileName(path) {
	if (path.lastIndexOf("\\") >= 0) {
		let reg = new RegExp("\\\\", "g");
		path = path.replace(reg, "/");
	}
	return path.substring(path.lastIndexOf("/") + 1);
}

// 补全文件路径
function completionFileUrl(path) {
	if (!path) {
		return ''
	}
	return `${Vue.prototype.baseURL}/sys/common/static/${path}`
}

// 预览图片
function previewImage(urls, current) {
	uni.previewImage({ // 预览图片  图片路径必须是一个数组
		current: current,
		urls: urls
	});
}

// 手机号隐藏中间四位
function mobileDesensitize(str) {
	if (!str) {
		return ''
	}
	if (typeof str !== 'string') {
		str = str.toString()
	}
	return str.replace(/(\d{3})\d*(\d{4})/, '$1****$2');
}

//身份证号隐藏中间
function idcardDesensitize(str) {
	if (!str) {
		return ''
	}
	if (typeof str !== 'string') {
		str = str.toString()
	}
	return str.replace(/(\d{1})\d*(\d{1})/, '$1****************$2');
}


// 创建提交按钮
function createSubmitBtn() {
	// #ifdef APP-PLUS
	const screenWidth = plus.screen.resolutionWidth
	const viewPadding = 15
	const viewWidth = parseInt(screenWidth - (viewPadding * 2))
	let submitBtn = new plus.nativeObj.View('test', {
		bottom: '50px',
		left: viewPadding + 'px',
		width: viewWidth + 'px',
		height: '45px',
	});
	submitBtn.draw([{
			tag: 'rect',
			id: 'rect',
			rectStyles: {
				color: '#0275FE',
				radius: '30px',
			},
			position: {
				top: '0px',
				left: '0px',
				width: '100%',
				height: '100%'
			}
		},
		{
			tag: 'font',
			id: 'font',
			text: '确认提交',
			textStyles: {
				color: '#FFFFFF',
				size: '17px',
			}
		},
	]);
	submitBtn.show();
	return submitBtn
	// #endif

	// #ifdef APP-PLUS
	return null
	// #endif
}

export default {
	getLinkParamByProp, // 获取链接内的特定参数值
	showToast, // 提示
	showLoading, // 等待
	isPhoneNumber, // 手机号校验
	formatNumber, // 格式化数字
	formatTimestamp, // 格式化时间戳
	formatWeekDate, // 格式化时间戳为星期几
	formatDatetime, // 格式化时间
	isJSONStr, // 判断是否为json字符串
	toPage, // 
	// throttling, // 节流
	noMultipleClicks, // 防止多次点击
	getFileName, // 从路径中截取文件名
	completionFileUrl, // 补全文件路径
	previewImage, // 预览图片
	mobileDesensitize, // 手机号隐藏中间四位
	idcardDesensitize, // 身份证号隐藏中间
	createSubmitBtn, // 创建提交按钮
	goToPage // 跳转url
}